1. Field of the Invention
This invention relates to improvements in testing methods and apparatuses, and more particularly to improvements in methods and apparatuses for testing disk devices, memory devices, or the like.
2. Background Information
This invention is directed to data processing equipment, hardware, and software that includes a "memory device" as a part of its operation, which may be in conjunction with a general distributed computing system, or similar system, herein referred to as a "computing system". Such memory devices may include, for example, hard disk drives, logical volumes, dynamic memories, dynamic memories in which a software package may reside or be placed for execution, software packages that are executed from a dynamic memory, and so on. Such equipment of the type to which this invention pertains are referred to herein simply as "memory devices", although it will be appreciated that this collective term is being used in a general sense. It should be also noted that as a part of the operation of such memory devices, the data applied to the memory media as input data may or may not be modified during the operation of the memory device. Thus, for example, the memory device in a simple form may be merely a hard drive or hard drive emulator. In a more complex form, the memory device may include multiple media that exchange and operate on input data to provide programmed outputs. In still another form, the memory device may be a software package, some or all of which may be operated from a storage media that returns data values according to a predetermined criteria. General examples of such packages include complex logical volumes, such as mirrors, stripes, redundant arrays of inexpensive disks (RAIDs), and logging file systems. Other examples will be readily apparent to those skilled in the art.
As new memory device products or computer or computing system hardware are developed and introduced, frequently existing computer or computing system installations are modified by the addition of such new products. However, even though manufacturers generally perform exhaustive tests on such memory devices to assure that they perform as anticipated, when the memory devices are actually installed in a production system in its intended operating environment, herein referred to as "under load", many times the operating system setups and environments cause the data storage medium to operate in unintended and unanticipated ways. Thus, although the storage medium or software application may have been tested in many respects by its manufacturer, many unknown influences may affect whether the device operates properly when it is installed on a computing system that is in its normal operating environment, or under load.
As a result, often when a new memory device or software application that is operated in a memory device is added to a computer system, the integrity of the new memory device or software application in the new environment is not totally established. In a worst case, a defective memory device can not only return erroneous data, but an improperly operating memory device may actually cause existing data or other information in the existing system to be corrupted or destroyed. Moreover, the fact that the memory device is not working as intended may not be readily apparent to a user until after an unpropitious result has been obtained.
Some types of storage media include internal parts that operate invisibly to an external observer. An example is a device that appears as a single disk drive, but which has several internal disk drives that interact in a predefined manner, such as a device that performs logging using collections of disk devices. One of the problems that is sometimes encountered is that in the normal operation of the device, one part operates to modify the contents or operation of another part. If the device is malfunctioning, it is possible for the device to modify itself or its contents incorrectly, but from the outside the operation appears normal. Sometimes, in fact, the normal accessing routines might not access all parts or areas of the device, and some areas that may be modified do not produce an output which would indicate a malfunction. To test the operation of such a device, therefore, it would be desirable to be enabled to place the part under load, or in its normal operating environment, and to systematically read the contents of the device independently of its operation of receiving write operations and delivering read operations and compare the read information to a list of desired information.
What is needed, therefore, is a method or apparatus for testing such memory device under load in a manner that is "safe" with regard to the operating system with which it is associated.